//
//  HYLHomeViewController.swift
//  iOSwechat
//
//  Created by apple on 16/2/26.
//  Copyright © 2016年 apple. All rights reserved.
//

import UIKit

class HYLHomeViewController: HYLBaseViewController {
    
    // MARK: - 属性
    let reuseIdentifier = "cellID"
    
    var statuses:[HYLStatus]? {
        didSet{
            // 当别人给statuses属性赋值后,再刷新tableView
            tableView.reloadData()
        }
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 只有用户登录了，才显示下面操作
        if !HYLUserAccountViewModel.sharedInstance.userLogin{
            return
        }
        
        // 预估高度
        tableView.estimatedRowHeight = 150
//        tableView.rowHeight = UITableViewAutomaticDimension
        
        // 设置的是固定高度
        // tableView.rowHeight = 150
        
        // 注册cell
        tableView.registerClass(HYLStatusCell.self, forCellReuseIdentifier: reuseIdentifier)
        // 显示导航
        setupNav()
//
        loadStatuses()
        
        
        
    }
    
    // MARK: - 获取微博数据
    private func loadStatuses() {
//        HYLNetworkTool.sharedInstance.loadStatuses { (rusult, error) -> () in
//            if error != nil {
//                print("没加载到数据\(error)")
//                return
//            }
//            print("加载到数据\(rusult)")
//        }
        
        statusVM.loadStatus { (statuses, error) -> () in
            if error != nil {
                print("加载微博数据出错了：\(error)")
                return
            }
            // 没有出错
            // print("在控制器中打印微博数据\(statuses)")
            self.statuses = statuses
        }
        
    }
    
    func setupNav() {
        navItem()
        buttonTitle()
    }
    
    // 左边，右边标题
    func navItem () {
        // 方式3
        navigationItem.leftBarButtonItem = UIBarButtonItem(image: "navigationbar_friendsearch")
        navigationItem.rightBarButtonItem = UIBarButtonItem(image: "navigationbar_pop")
        
    }
    
    
    // MARK: - Title显示，布局
    func buttonTitle() {
        let button = HYLTitleView(title: "传智iOS")
        navigationItem.titleView = button
        button.addTarget(self, action: "buttonTitleClick:", forControlEvents: UIControlEvents.TouchUpInside)
    }
    
    
    // MARK: - title 点击方法
    func buttonTitleClick(button : UIButton) {
        
        button.selected = !button.selected
        
        // 选转箭头
        UIView.animateWithDuration(0.25) { () -> Void in
            button.imageView?.transform = button.selected ? CGAffineTransformMakeRotation(CGFloat(M_PI - 0.001)) : CGAffineTransformIdentity
        }
        
        // 按钮选中的时候弹出Popover
        if button.selected {
            // UIpopoverViewController: 只能用在iPad上面
            // iOS8.0以后,使用 UIPopoverPresentationController 可以达到popover的效果
            
            // 1.加载sb
            let sb = UIStoryboard(name: "HYLPopoverView", bundle: nil)
            // 2.创建控制器
            let popoverVC = sb.instantiateViewControllerWithIdentifier("popover")
            
            // 在iPhone上面设置Popover默认会适配成Modal
            popoverVC.modalPresentationStyle = UIModalPresentationStyle.Popover
            
            popoverVC.popoverPresentationController?.delegate = self
            
            popoverVC.popoverPresentationController?.sourceView = navigationItem.titleView
            // 找到箭头指向最适宜的方向
            popoverVC.popoverPresentationController?.sourceRect = navigationItem.titleView!.bounds
            
            // 设置弹出控制器显示的大小
            popoverVC.preferredContentSize = CGSize(width: 200, height: 5 * 44)
            presentViewController(popoverVC, animated: true, completion: nil)
        }
        
    }
    
    // MARK: - 微博模型的ViewModel
    private lazy var statusVM: HYLStatusViewModel  = HYLStatusViewModel()
}

// MARK: - tableView数据源方法
extension HYLHomeViewController {
    // 显示cell数量
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // ??: ?? 前面的可选有值,就拆包,如果没有值,使用 ?? 后面的值
        return statuses?.count ?? 0
//        return 10
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCellWithIdentifier(reuseIdentifier, forIndexPath: indexPath) as! HYLStatusCell
        
        cell.status = statuses?[indexPath.row]
//        print("--------\(cell.status?.text)")
        // 将微博的内容显示出来
        // statuses?也能赋值,看接收方的类型
        
        // cell.textLabel?.text = statuses?[indexPath.row].text
        
        return cell
    }
    
    
    
    // MARK: - tableView 代理方法
    override func tableView(tableView: UITableView, shouldHighlightRowAtIndexPath indexPath: NSIndexPath) -> Bool {
        return false
    }
}


// MARK: - UIPopoverPresentationControllerDelegate 代理方法
extension HYLHomeViewController:UIPopoverPresentationControllerDelegate{
    // 让iPhone上面可以显示popover效果
    func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
        return UIModalPresentationStyle.None
    }
    
    // popover关闭时调用
    func popoverPresentationControllerDidDismissPopover(popoverPresentationController: UIPopoverPresentationController) {
        // 将标题按钮的街头转下去
        let button = navigationItem.titleView as! HYLTitleView
        buttonTitleClick(button)
    }
}









